package cn.zhfeat.hatch.rpcimpl;

import java.util.List;

import javax.annotation.Resource;

import cn.zhfeat.hatch.dto.store.BaseStoreInfoDto;
import cn.zhfeat.hatch.dto.store.BaseStoreToUserDto;
import cn.zhfeat.hatch.entity.store.BaseStoreInfo;
import cn.zhfeat.hatch.rpc.IBaseStoreInfoRpcService;
import cn.zhfeat.hatch.service.IBaseStoreInfoService;
import cn.zhfeat.hatch.service.IBaseStoreToUserService;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;
import com.github.pagehelper.PageInfo;


/**
 * @description: 门店信息相关Rpc服务
 *
 * @author ZhangHao
 * @date 2018年5月3日 下午3:33:14 
 * @version 1.0.0.1
 */
@Service("baseStoreInfoRpcService")     
public class BaseStoreInfoRpcServiceImpl implements IBaseStoreInfoRpcService {

	private static final Logger log = Logger.getLogger(BaseStoreInfoRpcServiceImpl.class);
	
	@Resource
	private IBaseStoreInfoService baseStoreInfoService;

	
	@Resource
	private IBaseStoreToUserService baseStoreToUserService;

	/**
	 * @description: 根据关键字查询所有门店信息
	 * 	原方法：public List<BmStore> getAllStore(String key_word, String startIndex, String page_size,String tenant_id);
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月3日 下午4:40:16 
	 * @version 1.0.0.1
	 */
	public List<BaseStoreInfo> findListByDto(BaseStoreInfoDto dto) {
		if(dto.getCid() == null) {
			return null;
		}
		return baseStoreInfoService.findListByDto(dto);  
	}

	
	/**
	 * @description: 列表页分页信息
	 *
	 * @param dto
	 * @author ZhangHao
	 * @date 2018年5月3日 下午8:16:36 
	 * @version 1.0.0.1
	 */
	public PageInfo<BaseStoreInfo> ajaxPageList(BaseStoreInfoDto dto) {
		if(dto.getCid() == null) {
			return null;
		}
		if(dto.getStoreIds() != null){
			dto.setStoreArrIds(dto.getStoreIds().split(","));
		}
		return baseStoreInfoService.pageList(dto);  
	}

	
	/**
	 * @description: 根据条件定位一条门店信息
	 * 原方法:List<BmStore> findByName(Map<String, Object> map);
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月6日 下午6:14:00 
	 * @version 1.0.0.1
	 */
	@Override
	public BaseStoreInfo findEntityByType(BaseStoreInfoDto dto) {
		if(dto.getCid() == null) {
			return null;
		}
		return baseStoreInfoService.findByType(dto);
	}

	/**
	 * @description: 查询符条件的门店总数
	 * 原方法:int countStore(Map<String, Object> map);
	 *
	 * @param dto
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月6日 下午6:36:44 
	 * @version 1.0.0.1
	 */
	@Override
	public Integer selectCountByType(BaseStoreInfoDto dto) {
		if(dto.getCid() == null) {
			return null;
		}
		return baseStoreInfoService.count(dto);
	}

	/**
	 * @description: 插入门店数据并返回自增ID
	 * 原方法：BmStore addStore(BmStore store);
	 * @param entity
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月6日 下午6:44:56 
	 * @version 1.0.0.1
	 */
	@Override
	public BaseStoreInfo insertSelective(BaseStoreInfo entity) {
		if(entity.getCid() == null) { 
			return null; 
		}
		
		int result = baseStoreInfoService.insertSelective(entity);
		if(result > 0) {
			return entity;
		}
		return null;
	}

	/**
	 * @description: 根据主键ID更新门店数据，如果id为null或updateTime为null则返回0，标识更新失败
	 *		逻辑删除也调用此方法。
	 * 原方法:1、public Integer updateStore(BmStore store);
	 *        2、public Integer deleteStore(Long id,String tenant_id);
	 *        两个方法合并为一个方法
	 * @param entity
	 * @return 
	 * @author ZhangHao
	 * @date 2018年5月6日 下午7:00:46 
	 * @version 1.0.0.1
	 */
	@Override
	public Integer updateSelective(BaseStoreInfo entity) {
		if(entity.getId() == null){
			return 0;
		}else if(entity.getUpdateTime() == null){
			return 0;
		}
		return baseStoreInfoService.updateSelective(entity);
	}

	/**
	 * 
	 * @Description: 查询相同门店数量
	 * 
	 * @author: ZhangHao
	 * @date:   2018年5月27日 下午1:14:35    
	 * @version 1.0.0.1
	 */
	@Override
	public Integer getCountByType(BaseStoreInfoDto baseStoreInfoDto) {
		if(baseStoreInfoDto.getId() == null || baseStoreInfoDto.getCid() == null) {
			return 0;
		}
		return baseStoreInfoService.getCountByType(baseStoreInfoDto);
	}
	
	/**
	 * 
	 * @Description: 修改门店用户关系
	 * 
	 * @author: ZhangHao
	 * @date:   2018年5月31日 下午6:03:46    
	 * @version 1.0.0.1
	 */
	@Override
	public Integer updateBaseStoreToUserByType(BaseStoreToUserDto storeToUserDto) {
		if(storeToUserDto.getCid() == null || storeToUserDto.getUserId() == null) {
			return 0;
		}
		return baseStoreToUserService.updateBaseStoreToUserByType(storeToUserDto);
	}
}


































